package com.itaming.lycheeframework.mybatisplus.base;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.extension.service.IService;

import java.io.Serializable;
import java.util.function.Supplier;

/**
 * 基础服务接口类
 *
 * @author A.Ming
 */
public interface BaseService<T> extends IService<T> {

    /**
     * 根据<code>ID</code>查询
     *
     * @param id              ID
     * @param exceptionIfNull 查询结果为空时的异常
     * @return 查询结果
     */
    T getById(Serializable id, Supplier<? extends RuntimeException> exceptionIfNull);

    /**
     * 根据条件查询
     *
     * @param queryWrapper    查询条件
     * @param exceptionIfNull 查询结果为空时的异常
     * @return 查询结果
     */
    T getOne(Wrapper<T> queryWrapper, Supplier<? extends RuntimeException> exceptionIfNull);

}
